package org.acm.seguin.tools.international;
import org.acm.seguin.parser.ChildrenVisitor;
import org.acm.seguin.parser.ast.ASTLiteral;
import org.acm.seguin.parser.ast.ASTName;
import org.acm.seguin.parser.ast.ASTPrimaryExpression;
import org.acm.seguin.parser.ast.ASTPrimaryPrefix;
/**
* Creates a list of strings in the directory that aren't used for internal
* information.
*
*@author Chris Seguin
*/
public class StringListVisitor extends ChildrenVisitor {
/**
* Prints out the literal if it is a string literal
*
*@param node The node we are visiting
*@param data The rename type data
*@return The rename type data
*/
public Object visit(ASTLiteral node, Object data) {
String name = node.getName();
if ((name != null) && (name.length() > 0) && (name.charAt(0) == '\"') && !name.equals("\"\"")) {
System.out.println("\t" + name);
}
return node.childrenAccept(this, data);
}
/**
* To visit a node
*
*@param node The node we are visiting
*@param data The rename type data
*@return The rename type data
*/
public Object visit(ASTPrimaryExpression node, Object data) {
ASTPrimaryPrefix prefix = (ASTPrimaryPrefix) node.jjtGetChild(0);
if (prefix.jjtGetChild(0) instanceof ASTName) {
ASTName name = (ASTName) prefix.jjtGetChild(0);
int count = name.getNameSize();
if (name.getNamePart(0).equals("Debug")) {
return data;
}
else {
String part = name.getNamePart(count - 1);
if (part.equals("getBundle")) {
return data;
}
else if (part.equals("getCachedBundle")) {
return data;
}
else if (part.equals("getString")) {
return data;
}
}
}
return node.childrenAccept(this, data);
}
}